range_check_func <- function(x,
lower,
upper,
slack_prop = 0.05,
colname = "x") {
min_x <- min(x); max_x <- max(x); slack <- (upper - lower) * slack_prop
if (min_x < (lower - slack) & max_x > (upper + slack)) {
stop("min ", colname, " is ", min_x, ", lower bound is ", lower - slack,
"\n", "max x is ", max_x, ", upper bound is ", upper + slack,
call. = FALSE)
} else if (min_x < (lower - slack)) {
stop("min ", colname, " is ", min_x, ", lower bound is ", lower - slack,
call. = FALSE)
} else if (max_x > (upper + slack)) {
stop("max ", colname, " is ", max_x, ", upper bound is ", upper + slack,
call. = FALSE)
}
}